#include <iostream>
#include <mysql_connection.h>
#include <mysql_driver.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
#include <cstring>

using namespace std;
using namespace sql;
int main()
{
    // 初始化驱动
    sql::mysql::MySQL_Driver *driver = NULL;
    sql::Connection *conn = NULL;
    driver = sql::mysql::get_mysql_driver_instance();
    if (driver == NULL)
    {
        cout << "driver is null" << endl;
    }
    // 连接
    // con = driver->connect("tcp://localhost:3306", "root", "root");
    conn = driver->connect("tcp://localhost:3306/db1", "root", "123456");
    if (conn == NULL)
    {
        cout << "conn is null" << endl;
    }
    cout << "connect suceess" << endl;
    // 查询
    int flag = 0;
    sql::Statement *stmt = conn->createStatement();
    sql::ResultSet *res;
    res = stmt->executeQuery("SELECT * FROM user");
    // while (res->next())
    // {
    //     cout << res->getInt("id") << endl;
    //     cout << res->getString("phone").c_str() << endl;
    //     cout << res->getString("imsi").c_str() << endl;
    // }
    // // 插入
    // conn->setAutoCommit(0); // 关闭自动提交
    // PreparedStatement *prep_stmt;
    // int updatecount = 0;
    // res->first();
    // flag = 0;
    // while (res->next())
    // {
    //     if (strcmp(res->getString("imsi").c_str(), "460010010000100") == 0)
    //     {
    //         flag = 1;
    //         break;
    //     }
    // }
    // if (flag == 0)
    // {
    //     prep_stmt = conn->prepareStatement("INSERT INTO cms_device (id,phone,imsi) VALUES (111,?,?)");
    //     prep_stmt->setString(1, "15043214321");
    //     prep_stmt->setString(2, "460010010000100");
    //     updatecount = prep_stmt->executeUpdate();
    // }
    // Savepoint *savept;
    // savept = conn->setSavepoint("SAVEPT1");
    // res->first();
    // flag = 0;
    // while (res->next())
    // {
    //     if (strcmp(res->getString("imsi").c_str(), "460010010000101") == 0)
    //     {
    //         flag = 1;
    //         break;
    //     }
    // }
    // if (flag == 0)
    // {
    //     prep_stmt = conn->prepareStatement("INSERT INTO cms_device (phone,imsi) VALUES (?,?)");
    //     prep_stmt->setString(1, "15043214321");
    //     prep_stmt->setString(2, "460010010000101");
    //     updatecount = prep_stmt->executeUpdate();
    // }
    // conn->rollback(savept);
    // conn->releaseSavepoint(savept);
    // conn->commit();
    // // 更新
    // conn->setAutoCommit(1); // 打开自动提交
    // prep_stmt = conn->prepareStatement("update cms_device set phone=? where phone=?");
    // prep_stmt->setString(1, "15011111111");
    // prep_stmt->setString(2, "15043214321");
    // updatecount = prep_stmt->executeUpdate();
}